package com.shengyin.ec.service.goods;

import java.lang.reflect.InvocationTargetException;
import java.util.List;

import org.apache.commons.beanutils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.shengyin.ec.model.dao.goods.GoodsTypeDao;
import com.shengyin.ec.model.entity.GoodsType;

@Service("goodsTypeService")
public class GoodsTypeServiceImpl implements GoodsTypeService {

	@Autowired
	GoodsTypeDao goodsTypeDao;

	public void createGoodsType(GoodsType goodType) {

		goodsTypeDao.save(goodType);
	}

	public List<GoodsType> getGoodsTypeList(int offset, int pagesize) {
		List<GoodsType> list = goodsTypeDao.getGoodsTypeList(offset, pagesize);
		int length = list.size();
		GoodsType goodstype = null;
		for (int i = 0; i < length; i++) {
			
			goodstype = list.get(i);
			if(goodstype!=null)
			goodstype.setTypeCount(this.getGoodsTypeCount(goodstype
					.getTypeName()));
		}

		return list;

	}

	public void removeGoodsType(long id) {
		goodsTypeDao.deleteByKey((long) id);
	}

	public GoodsType getGoodsTypeById(long id) {
		return goodsTypeDao.get(id);

	}

	public void updateGoodsType(GoodsType goodsType) {

		try {
			GoodsType goodsType1 = goodsTypeDao.get(goodsType.getId());
			BeanUtils.copyProperties(goodsType1, goodsType);
			goodsTypeDao.update(goodsType1);
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}

	}

	@Override
	public List<GoodsType> getGoodsTypeByParentName(String parentName) {
		return goodsTypeDao.getGoodsTypeByParentName(parentName);
	}

	@Override
	public List<GoodsType> getGoodsTypeByChild(int childNum) {
		return goodsTypeDao.getGoodsTypeByChild(childNum);
	}

	@Override
	public List<GoodsType> getGoodsTypeByParentID(int parentId) {
		return goodsTypeDao.getGoodsTypeByParentID(parentId);
	}

	@Override
	public Long getTotal() {
		return goodsTypeDao.getTotal();
	}

	public boolean goodsTypeCheck(String typeName) {
		return goodsTypeDao.goodsTypeCheck(typeName);
	}

	// add wql20120319
	@Override
	public List<GoodsType> getGoodsTypeList() {
		return goodsTypeDao.getGoodsTypeList();
	}

	// add lining 2012-03-21

	@Override
	public long getGoodsTypeCount(String goodsTypeName) {
		return goodsTypeDao.getGoodsTypeCount(goodsTypeName);
	}

    public List<GoodsType> getGoodsTypeByKeyword(String keyword,int offset,int pageSize){
    	return goodsTypeDao.getGoodsTypeByKeyword(keyword,offset,pageSize);
    }
	
	public List<GoodsType> getGoodsTypeByKeyword(String keyword){
		return goodsTypeDao.getGoodsTypeByKeyword(keyword);
	}
}
